/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package repol190.ocorrencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import repol190.util.ConexaoBD;

/**
 *
 * @author micael
 */
public class RepositorioOcorrenciaDataBase implements RepositorioOcorrencias{
    
    private Connection con;

    @Override
    public void inserirOcorrencia(Ocorrencia novaOcorrencia) {
         con = new ConexaoBD().abrirConexao();
         
         String sql = "insert into ocorrencia (id_ocorrencia, policiais_quantidade, status, "
                + "descricao, prioridade, id_endereco) values (?, ?, ?, ?, ?, ?)";
        try {
            PreparedStatement comando = con.prepareStatement(sql);
            
            comando.setInt(1, novaOcorrencia.getId());
            comando.setInt(2, novaOcorrencia.getQtdePoliciais());
            comando.setInt(3, novaOcorrencia.getStatus());
            comando.setString(4, novaOcorrencia.getDescricao());
            comando.setInt(5, novaOcorrencia.getPrioridade());
            comando.setInt(6, novaOcorrencia.getEndereco().getId());
            
            comando.execute();
            
            comando.close();
            con.close();
            
            
        } catch (SQLException ex) {
            Logger.getLogger(RepositorioOcorrenciaDataBase.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public void excluirOcorrencia(int id) {
         con = new ConexaoBD().abrirConexao();
         
         String sql = "delete from ocorrencia where id_ocorrencia=?";
         
        try {
            PreparedStatement comando = con.prepareStatement(sql);
            
            comando.setInt(1, id);
            
            comando.execute();
            
            comando.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(RepositorioOcorrenciaDataBase.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public Ocorrencia buscaOcorrencia(int id) {
         con = new ConexaoBD().abrirConexao();
        Ocorrencia ocorrencia = null;
        Endereco endereco = null;
        ResultSet rs = null;
        
        String sql = "select * from ocorrencia where id_ocorrencia="+id;
        
        try {
            PreparedStatement comando = con.prepareStatement(sql);
            
            rs = comando.executeQuery();
            
            while(rs.next()){
                
                RepositorioEnderecoDataBase enderecos = new RepositorioEnderecoDataBase();
                
                endereco = enderecos.buscaEndereco(rs.getInt("id_endereco"));
                
                ocorrencia = new Ocorrencia(rs.getInt("id_ocorrencia"), rs.getString("descricao"),
                        endereco, rs.getInt("policiais_quantidade"), rs.getInt("prioridade"),
                        rs.getInt("status"));
            }
            
            comando.close();
            rs.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(RepositorioOcorrenciaDataBase.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        
        
        return ocorrencia;
    }

    @Override
    public void atualizarOcorrencia(Ocorrencia ocorrencia) {
         con = new ConexaoBD().abrirConexao();
         
         String sql = "update ocorrencia set policiais_quantidade=? status=?"
                 +"descricao=? prioridade=? id_endereco=?";
        try {
            PreparedStatement comando = con.prepareStatement(sql);
            
            comando.setInt(1, ocorrencia.getQtdePoliciais());
            comando.setInt(2, ocorrencia.getStatus());
            comando.setString(3, ocorrencia.getDescricao());
            comando.setInt(4, ocorrencia.getPrioridade());
            comando.setInt(5, ocorrencia.getEndereco().getId());
            
            comando.execute();
            
            comando.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(RepositorioOcorrenciaDataBase.class.getName()).log(Level.SEVERE, null, ex);
        }
         
    }

    @Override
    public Collection<Ocorrencia> listarOcorrencias() {
         con = new ConexaoBD().abrirConexao();
        Vector<Ocorrencia> resp = new Vector<Ocorrencia>();
        ResultSet rs = null;
        Ocorrencia ocorrencia = null;
        Endereco endereco = null;
        RepositorioEnderecoDataBase enderecos = new RepositorioEnderecoDataBase();
        
        String sql = "select * ocorrencia";
        
        try {
            PreparedStatement comando = con.prepareStatement(sql);
            
            rs = comando.executeQuery();
            
            while(rs.next()){       
                
                endereco = enderecos.buscaEndereco(rs.getInt("id_endereco"));
                
                ocorrencia = new Ocorrencia(rs.getInt("id_ocorrencia"), rs.getString("descricao"),
                        endereco, rs.getInt("policiais_quantidade"), rs.getInt("prioridade"),
                        rs.getInt("status"));
                
                resp.add(ocorrencia);
            }
            
            comando.close();
            rs.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(RepositorioOcorrenciaDataBase.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return resp;
    }
    
}
